// ----------------------------------
// RSDK Project: Sonic Essence
// Script Description: Palmtree
// Script Author: Christian Whitehead/Simon Thomley/Xanman
// Edits by Team ReDream
// ----------------------------------

// Aliases
private alias object.value0 : object.timer
private alias object.value1 : object.frame2
private alias object.value2 : object.timer2
private alias object.value3 : Warning.Frame
private alias object.value5 : Lightning.Striked

private alias 0 : CUTSCENE_NONE
private alias 1 : CUTSCENE_MIDZONE
private alias 2 : CUTSCENE_ENDZONE

// Function declarations
reserve function Palmtree_DebugDraw
reserve function Palmtree_DebugSpawn

function Palmtree_DebugDraw
	DrawSprite(0)
end function


function Palmtree_DebugSpawn
	CreateTempObject(TypeName[Palmtree], 0, object.xpos, object.ypos)
	object[tempObjectPos].drawOrder = 6
end function


event ObjectMain
	object.priority = PRIORITY_ACTIVE
	object.draworder = 5

	if LightningWarningTimer == 20
		if object.outOfBounds != 1
			PlaySfx(SfxName[Warning], 0)
		end if
	end if

	if LightningWarningTimer == 40
		if object.outOfBounds != 1
			PlaySfx(SfxName[Warning], 0)
		end if
	end if
	
	if object.frame == 2
		if object.outOfBounds != 1
			PlaySfx(SfxName[Lightning], 0)
		end if
	end if

	//foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
		//BoxCollisionTest(C_BOX, object.entityPos, -23, -310, 80, -270, currentPlayer, object[currentPlayer].value40, object[currentPlayer].value38, object[currentPlayer].value41, object[currentPlayer].value39)
	//next

	if object.frame >= 3
		foreach (GROUP_PLAYERS, currentPlayer, ACTIVE_ENTITIES)
			BoxCollisionTest(C_TOUCH, object.entityPos, -3, -300, 70, 16, currentPlayer, object[currentPlayer].value40, object[currentPlayer].value38, object[currentPlayer].value41, object[currentPlayer].value39)
			if checkResult == 1
				if cutscene.mode == CUTSCENE_NONE
					CallFunction(PlayerObject_Hit)
					HitType = 2
				endif
			end if
		next
	end if




end event


event ObjectDraw
	if cutscene.mode == CUTSCENE_NONE
		temp0 = object.propertyvalue
		temp0 += 13
		DrawSpriteFX(temp0, FX_ROTOZOOM, object.xpos, object.ypos)
	endif

	

	if LightningWarningTimer >= 20
		Warning.Frame = 17
		
	end if

	if LightningWarningTimer >= 40
		Warning.Frame = 18
	end if


	if LightningTimer >= 0
		Warning.Frame = 17
		Lightning.Striked = 1
	end if

	if Lightning.Striked == 1
		object.timer++
		if object.timer >= 50
			object.timer = 48
			object.frame++
			Warning.Frame = 6
			if object.frame == 3
				if object.outOfBounds == 0
					DrawRect(0, 0, screen.xsize, screen.ysize, 255, 255, 255, 100)
				end if
				object.timer = 30
				object.frame2 = 6
			else
				object.frame2 = 11
			end if
	
			if object.frame >= 6
				object.frame = 0
				object.timer = 0
				Lightning.Striked = 0
				LightningTimer = -50
				LightningWarningTimer = -175
			end if
		end if
	end if


	object.timer2++

	if object.frame >= 3
		if object.timer2 >= 50
			if object.frame2 != 11
				object.timer2 = 46
				object.frame2++
			end if
		end if
	
		if object.frame2 >= 11
			object.frame2 = 11
		end if
	end if	
	DrawSpriteFX(Warning.Frame, FX_ROTOZOOM, object.xpos, object.ypos)
	DrawSpriteFX(object.frame, FX_ROTOZOOM, object.xpos, object.ypos)
	DrawSpriteFX(object.frame2, FX_ROTOZOOM, object.xpos, object.ypos)
	DrawSpriteFX(16, FX_ROTOZOOM, object.xpos, object.ypos)
end event


event ObjectStartup
	DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, start.fadeValue)
	LoadSpriteSheet("SSZ/Lightning.gif")

	// Ring frames

	SpriteFrame(-20, -293, 0,0, 1, 1) //0

	SpriteFrame(-20, -293, 53, 135, 1, 1) //1
	SpriteFrame(-20, -293, 64, 242, 55, 1) //2
	
	SpriteFrame(-20, -293, 91, 300, 120, 1) //3

	SpriteFrame(-20, -293, 74, 248, 212, 1) //4
	SpriteFrame(-20, -293, 74, 248, 287, 1) //5

	
	SpriteFrame(-20, -293, 0,0, 1, 1) //6

	SpriteFrame(3, 0, 50, 9, 1, 137) //7
	SpriteFrame(1, -4, 50, 13, 1, 147) //8
	SpriteFrame(-3, -15, 58, 24, 1, 244) //9
	SpriteFrame(-5, -21, 64, 30, 1, 269) //10

	SpriteFrame(-20, -293, 0,0, 1, 1) //11

	SpriteFrame(15, -21, 4, 12, 1, 161) //12

	SpriteFrame(-3, 5, 54, 10, 1, 174) //13	
	SpriteFrame(-3, -5, 48, 21, 1, 185) //14
	SpriteFrame(-3, -5, 48, 21, 1, 207) //15

	SpriteFrame(-25, -313, 109, 41, 390, 1) //16

	SpriteFrame(12, -24, 24, 24, 390, 43) //17
	SpriteFrame(12, -24, 24, 24, 415, 43) //18





	// Add the Ring to the debug mode object list
	SetTableValue(TypeName[Palmtree], DebugMode_ObjCount, DebugMode_TypesTable)
	SetTableValue(Palmtree_DebugDraw, DebugMode_ObjCount, DebugMode_DrawTable)
	SetTableValue(Palmtree_DebugSpawn, DebugMode_ObjCount, DebugMode_SpawnTable)
	DebugMode_ObjCount++
	
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
